<?php
class ServiceController {
    //Хранит данные из $_POST, на случай если понадобится их предварительная обработка
    private $post;
    
    function __construct() {
        $this->post = $_POST;    
    }
        
    protected function post($fields) {
        $fields = paramsToArray(func_get_args());
        $result = array();
        foreach ($fields as $field)
            $result[$field] = isset($this->post[$field])? $this->post[$field] : NULL;
        return $result;
    }
    
    protected function postOne($field) {
        return isset($this->post[$field])? $this->post[$field] : NULL;
    }
    
    //Возвращаем JSON-ответ клиенту, указывая статус - успешно/не успешно, произвольное сообщение
    //и сообщение которое может быть передано callback-функциям на клиенте
    protected function response($message = '', $status = TRUE, $callback_params = FALSE) {
        //Строчки ответов сервера хранятся централизовано, в коде контроллеров только ключи
        //Удобно, если потребуется локализация. Помимо этого если потребуется исправить строчку,
        //будет легко её найти
        $message = Messager::get($message);
        
        if ($status)
          $status_text = 'ok';
        else
          $status_text = 'not_ok';
        
        if ($callback_params) 
            $callback_params = ",callback_params:".$callback_params."";
        
        echo "{status:'".$status_text."',message:'".$message."'".$callback_params."}";
    }

    protected function directView($view_name, $view_data) {
		extract($view_data);
        require_once(Path::view('_services/'.$view_name));
    }
	
	//Отправляет клиенту статус и некие данные данные в формате json
	protected function jsonResponse($json = '', $status = TRUE) {
        if ($status)
          $status_text = 'ok';
        else
          $status_text = 'not_ok';
        
        echo "{'status':'".$status_text."','data':".$json."}";
    }
	
	protected function directResponse($text) {
		echo $text;
	}
}
?>